package com.yzq.api.aliyunai.model;
import cn.hutool.core.annotation.Alias;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 * 阿里云文生图AI接口请求类
 */
@Data
public class AliyunTextToImageTaskRequest implements Serializable {


    @Serial
    private static final long serialVersionUID = -4528800212865297943L;
    /**
     * 模型名称（必选）
     * 示例值：wanx2.1-t2i-turbo
     */
    private String model = "wanx2.1-t2i-turbo";

    /**
     * 输入的基本信息（必选）
     */
    private Input input;

    /**
     * 图像处理参数（可选）
     */
    private Parameters parameters;

    /**
     * 输入的基本信息内部类
     */
    @Data
    public static class Input implements Serializable {
        /**
         * 正向提示词（必选）
         * 描述生成图像中期望包含的元素和视觉特点，支持中英文，长度不超过800个字符
         * 示例值：一只坐着的橘黄色的猫，表情愉悦，活泼可爱，逼真准确
         */
        private String prompt;

        /**
         * 反向提示词（可选）
         * 描述不希望在画面中看到的内容，支持中英文，长度不超过500个字符
         * 示例值：低分辨率、错误、最差质量、低质量、残缺、多余的手指、比例不良等
         */
        @Alias("negative_prompt")
        private String negativePrompt;
    }

    /**
     * 图像处理参数内部类
     */
    @Data
    public static class Parameters implements Serializable {
        /**
         * 输出图像的分辨率（可选）
         * 默认值：1024*1024
         * 宽高像素范围：[512, 1440]，最高可达200万像素
         */
        private String size = "1024*1024";

        /**
         * 生成图片的数量（可选）
         * 取值范围：1~4张，默认值：4
         */
        private Integer n = 4;

        /**
         * 随机数种子（可选）
         * 取值范围：[0, 2147483647]，不提供则自动生成
         * 若给定，n张图片将使用seed、seed+1...seed+n-1
         */
        private Integer seed;

        /**
         * 是否开启prompt智能改写（可选）
         * true：开启（默认值），对正向提示词进行智能改写，增加3-4秒耗时
         * false：不开启
         */
        @Alias("prompt_extend")
        private Boolean promptExtend;

        /**
         * 是否添加水印标识（可选）
         * false：不添加（默认值）
         * true：添加，水印位于右下角，文案为“AI生成”
         */
        private Boolean watermark;
    }
}
